package pl.uz.zgora.plan;

import java.util.ArrayList;
import java.util.Iterator;

public class Plan {
	private ArrayList<Przedmiot> mSubjectsList = null;
	private ArrayList<Nauczyciel> mTeachersList = null;
	private ArrayList<Sala> mClassList = null;
	private ArrayList<Budynek> mBuildingList = null;
	private Grupa group = null;
	private Nauczyciel teacher = null;
	
	public Nauczyciel getTeacher() {
		return teacher;
	}

	public void setTeacher(Nauczyciel teacher) {
		this.teacher = teacher;
	}

	public Plan() {
		group = new Grupa();
		
		mSubjectsList = new ArrayList<Przedmiot>();
		mTeachersList = new ArrayList<Nauczyciel>();
		mClassList = new ArrayList<Sala>();
	}
	
	public Plan(final Grupa group,
				final ArrayList<Przedmiot> subjectsList, 
				final ArrayList<Nauczyciel> teachersList, 
				final ArrayList<Sala> classList) {
		
		setGroup(group);
		
		this.mSubjectsList = subjectsList;
		this.mClassList = classList;
		this.mTeachersList = teachersList;
	}
	
	public Plan(final Grupa group,
			final ArrayList<Przedmiot> subjectsList, 
			final ArrayList<Nauczyciel> teachersList, 
			final ArrayList<Sala> classList,
			final ArrayList<Budynek> buildingList) {
	
	setGroup(group);
	
	this.mSubjectsList = subjectsList;
	this.mClassList = classList;
	this.mTeachersList = teachersList;
	this.mBuildingList = buildingList;
}
	
	public void setGroup(final Grupa group)
	{
		this.group = group;
	}
	
	public Grupa getGroup()
	{
		return group;
	}

	public ArrayList<Sala> getSale()
	{
		return mClassList;
	}
	
	public ArrayList<Budynek> getBudynki()
	{
		return mBuildingList;
	}
	
	public ArrayList<Nauczyciel> getNauczycieli()
	{
		return mTeachersList;
	}
	
	public ArrayList<Przedmiot> getPrzedmioty() {
		return mSubjectsList;
	}
	
	public void addPrzedmiot(final Przedmiot przedmiot) {
		mSubjectsList.add(przedmiot);
	}
	
	public void addBudynek(final Budynek budynek)
	{
		final Iterator<Budynek> iterator =  mBuildingList.iterator();
		Budynek currentBudynek = null;
		while(iterator.hasNext()) {
			currentBudynek = iterator.next();
			if(currentBudynek.getIdBudynku().equals(budynek.getIdBudynku())) {
				break;
			}
		}
		
		if(currentBudynek != null) {
			if(!iterator.hasNext() && 
					!currentBudynek.getIdBudynku().equals(budynek.getIdBudynku())) {
				mBuildingList.add(budynek);
			}
		} else {
			mBuildingList.add(budynek);
		}
	}
	
	public void addNauczyciel(final Nauczyciel nauczyciel) {
		final Iterator<Nauczyciel> iterator =  mTeachersList.iterator();
		Nauczyciel currentNauczyciel = null;
		while(iterator.hasNext()) {
			currentNauczyciel = iterator.next();
			if(currentNauczyciel.getIdNauczyciela().equals(nauczyciel.getIdNauczyciela())) {
				break;
			}
		}
		
		if(currentNauczyciel != null) {
			if(!iterator.hasNext() && 
					!currentNauczyciel.getIdNauczyciela().equals(nauczyciel.getIdNauczyciela())) {
				mTeachersList.add(nauczyciel);
			}
		} else {
			mTeachersList.add(nauczyciel);
		}
	}
	
	public void addSala(final Sala sala) {
		final Iterator<Sala> iterator =  mClassList.iterator();
		Sala currentSala = null;
		while(iterator.hasNext()) {
			currentSala = iterator.next();
			if(currentSala.getIdSali().equals(sala.getIdSali())) {
				break;
			}
		}
		
		if(currentSala != null) { 
			if(!iterator.hasNext() 
					&& !currentSala.getIdSali().equals(sala.getIdSali())) {
	 			mClassList.add(sala);
			}
		} else {
			mClassList.add(sala);
		}
	}
}
